[小ネタ]AWS CLIを使ってAWS BakcupでEC2のバックアップを取得してみる
はじめに
こんにちは。大阪オフィスの林です。
AWS BackupでEC2をバックアップを取得する機会があったので、せっかくなのでCLIからも操作してみました。今回はそのまとめです。
オンデマンドでバックアップ取得
下記コマンドを実行しバックアップを取得します。
[ec2-user@ip-172-16-0-92 ~]$ aws backup start-backup-job --backup-vault-name Default --resource-arn arn:aws:ec2:ap-northeast-1:xxxxxxxxxxxx:instance/i-xxxxxxxxxxxxxxxxx --iam-role-arn arn:aws:iam::xxxxxxxxxxxx:role/backup1 { "CreationDate": 1582945056.999, "BackupJobId": "24da5c3e-e53c-43b9-9f4a-814f5a4f9880" }
パラメータの説明
--backup-vault-name | バックアップボールトでは取得したバックアップを整理・管理できます。デフォルトは「Default」となります。 |
---|---|
--resource-arn | バックアップ対象のARNを指定します。今回はEC2のARNを指定します。 |
--iam-role-arn | バックアップの取得に使用するIAMロールを指定します。詳細はこちら |
実行時に戻り値として出力されたBackupJobIdを元にバックアップの取得状況を確認することもできます。取得状況を確認するコマンドは下記を参照ください。戻り値の中のState
の項目で状態を把握することが可能です。正常であればCREATED
→RUNNING
→COMPLETED
と状態が遷移していきます。
バックアップジョブが作成されました。
[ec2-user@ip-172-16-0-92 ~]$ aws backup describe-backup-job --backup-job-id 24da5c3e-e53c-43b9-9f4a-814f5a4f9880 { "BackupVaultArn": "arn:aws:backup:ap-northeast-1:xxxxxxxxxxxx:backup-vault:Default", "StartBy": 1582973856.999, "ResourceType": "EC2", "ResourceArn": "arn:aws:ec2:ap-northeast-1:xxxxxxxxxxxx:instance/i-xxxxxxxxxxxxxxxxx", "IamRoleArn": "arn:aws:iam::xxxxxxxxxxxx:role/backup1", #作成時は「CREATED」となります。ここの状態が遷移します。 "State": "CREATED", "BackupJobId": "24da5c3e-e53c-43b9-9f4a-814f5a4f9880", "CreationDate": 1582945056.999, "BackupVaultName": "Default", "BytesTransferred": 0 }
バックアップジョブが始まりました。
[ec2-user@ip-172-16-0-92 ~]$ aws backup describe-backup-job --backup-job-id 24da5c3e-e53c-43b9-9f4a-814f5a4f9880 { (省略) "State": "RUNNING", (省略) }
バックアップジョブが完了しました。
[ec2-user@ip-172-16-0-92 ~]$ aws backup describe-backup-job --backup-job-id 24da5c3e-e53c-43b9-9f4a-814f5a4f9880 { (省略) "State": "COMPLETED", (省略) }
リストアの実行
リストアする前にバックアップジョブ完了時の情報からリストアに必要な情報を取得します。上述のバックアップジョブの状態確認コマンドを実行すると、バックアップジョブが完了している場合RecoveryPointArn
という項目が作成されています。リストアはこのRecoveryPointArn
を使っていきます。
[ec2-user@ip-172-16-0-92 ~]$ aws backup describe-backup-job --backup-job-id 24da5c3e-e53c-43b9-9f4a-814f5a4f9880 { "CompletionDate": 1582946165.628, "BackupVaultArn": "arn:aws:backup:ap-northeast-1:xxxxxxxxxxxx:backup-vault:Default", "PercentDone": "0.0", #この「RecoveryPointArn」のARNを使ってリストアする。 "RecoveryPointArn": "arn:aws:ec2:ap-northeast-1::image/ami-xxxxxxxxxxxxxxxxx", "ResourceType": "EC2", "BackupVaultName": "Default", "ResourceArn": "arn:aws:ec2:ap-northeast-1:xxxxxxxxxxxx:instance/i-xxxxxxxxxxxxxxxxx", "IamRoleArn": "arn:aws:iam::xxxxxxxxxxxx:role/backup1", "State": "COMPLETED", "BackupJobId": "24da5c3e-e53c-43b9-9f4a-814f5a4f9880", "StartBy": 1582973856.999, "CreationDate": 1582945056.999, "BackupSizeInBytes": 8589934592, "BytesTransferred": 0 }
それではリストアしていきます。リストアのコマンド実行時に--metadata
を引数としてせることで幾つか設定を持たせた状態でリストアすることが出来ます。今回は最低限のVPCの情報とサブネットの情報だけ設定してリストアを行います。
[ec2-user@ip-172-16-0-92 aws]$ aws backup start-restore-job --recovery-point-arn arn:aws:ec2:ap-northeast-1::image/ami-xxxxxxxxxxxxxxxxx --iam-role-arn arn:aws:iam::xxxxxxxxxxxx:role/backup1 --metadata VpcId=vpc-xxxxxxxxxxxx,SubnetId=subnet-xxxxxxxxxxxx { "RestoreJobId": "E8E9B136-253D-D49B-0345-910D308C1644" }
パラメータの説明
--recovery-point-arn | リカバリポイントを一意に識別するARN名を指定します。このARNはバックアップジョブが完了した際の情報から取得します。 |
---|---|
--iam-role-arn | リストアに使用するIAMロールを指定します。詳細はこちら |
--metadata | リカバリするリソースに設定する情報を指定します。 |
実行時に戻り値として出力されたRestoreJobIdを元にリストアの実行状況を確認することもできます。実行状況を確認するコマンドは下記を参照ください。戻り値の中のState
の項目で状態を把握することが可能です。正常であればバックアップの時と同じようにCREATED
→RUNNING
→COMPLETED
と状態が遷移していきます。
リストアジョブが作成されました。
ec2-user@ip-172-16-0-92 aws]$ aws backup describe-restore-job --restore-job-id E8E9B136-253D-D49B-0345-910D308C1644 { "RestoreJobId": "E8E9B136-253D-D49B-0345-910D308C1644", "RecoveryPointArn": "arn:aws:ec2:ap-northeast-1::image/ami-xxxxxxxxxxxxxxxxx", "CreationDate": "2020-02-29T04:38:32.801000+00:00", #作成時は「CREATED」となります。ここの状態が遷移します。 "State": "CREATED", "BackupSizeInBytes": 8589934592, "IamRoleArn": "arn:aws:iam::xxxxxxxxxxxx:role/backup1" }
リストアジョブが始まりました。
[ec2-user@ip-172-16-0-92 ~]$ aws backup describe-restore-job --restore-job-id E8E9B136-253D-D49B-0345-910D308C1644 { (省略) "State": "RUNNING", (省略) }
リストアジョブが完了しました。
[ec2-user@ip-172-16-0-92 ~]$ aws backup describe-restore-job --restore-job-id E8E9B136-253D-D49B-0345-910D308C1644 { (省略) "State": "COMPLETED", (省略) }
リストアジョブ完了時の情報にCreatedResourceArn
という項目があります。ここにEC2のインスタンスIDが記録されています。
[ec2-user@ip-172-16-0-92 aws]$ aws backup describe-restore-job --restore-job-id E8E9B136-253D-D49B-0345-910D308C1644 { "RestoreJobId": "E8E9B136-253D-D49B-0345-910D308C1644", "RecoveryPointArn": "arn:aws:ec2:ap-northeast-1::image/ami-xxxxxxxxxxxxxxxxx", "CreationDate": "2020-02-29T04:38:32.801000+00:00", "CompletionDate": "2020-02-29T04:48:34.948000+00:00", "Status": "COMPLETED", "BackupSizeInBytes": 8589934592, "IamRoleArn": "arn:aws:iam::xxxxxxxxxxxx:role/backup1", #作成されたリソースがここでわかる。 "CreatedResourceArn": "arn:aws:ec2:ap-northeast-1:xxxxxxxxxxxx:instance/i-06970ae5ac3c09d27" }
マネージメントコンソールから確認してみます。リストアしたEC2が立ち上がってきたことが分かります。
まとめ
単発で取得するような場合はCLIは非常にシンプルで簡単なものの、CLIから操作するメリットが少し見えにくいという側面もあるような気がしました。今回はAWS Bakcupにおいてオンデマンドのバックアップとリストアを試してみましたが他のAWS Bakcupに関わる操作ではCLIのメリットが享受されるような内容もあるかもしれないです。その辺りはまた別途触っていきたいと思います!
以上、大阪オフィスの林がお送りしました!